"""
__new__和__init__的区别

核心知识：
    1.new是用来控制对象的生成过程，在对象生成之前
    2.init是用来完善对象的
    3.如果new方法不返回对象，则不会调用init函数
"""


class User:
    def __new__(cls, *args, **kwargs):
        print("in new")
        return super().__new__(cls)

    def __init__(self, name):
        print("in init")
        self.name = name


def use_user():
    user = User(name="Kevin")
    print(user.name)
    # 输出结果：
    """
    in new
    in init
    Kevin
    """


if __name__ == '__main__':
    use_user()
